// 闭包函数，创建一个带状态的异步计数器
function createAsyncCounter(initialValue = 0) {
  let count = initialValue // 闭包中保存的状态变量

  // 返回一个函数，该函数返回Promise
  return function increment(delay = 100) {
    // 返回Promise处理异步操作
    return new Promise((resolve, reject) => {
      if (delay < 0) {
        return reject(new Error('延迟时间不能为负数'))
      }

      // 模拟异步操作
      setTimeout(() => {
        count++ // 访问并修改闭包中的状态
        resolve({
          current: count,
          timestamp: new Date().toISOString(),
        })
      }, delay)
    })
  }
}

// 使用示例
const asyncCounter = createAsyncCounter(10)

// 第一次调用
asyncCounter(200).then(result => {
  console.log(`计数结果: ${result.current}, 时间: ${result.timestamp}`)
})

// 第二次调用
asyncCounter(100).then(result => {
  console.log(`计数结果: ${result.current}, 时间: ${result.timestamp}`)
})

// 错误处理示例
asyncCounter(-50).catch(error => {
  console.error('发生错误:', error.message)
})
